package com.example.backend.common.tree;

import com.example.backend.entity.Permission;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;

/**
 * 菜单树节点
 */
@Data
public class MenuTree {
    
    /**
     * 菜单ID
     */
    private Long id;
    
    /**
     * 父级ID
     */
    private Long parentId;
    
    /**
     * 菜单名称
     */
    private String name;
    
    /**
     * 路由路径
     */
    private String path;
    
    /**
     * 组件路径
     */
    private String component;
    
    /**
     * 重定向路径
     */
    private String redirect;
    
    /**
     * 菜单图标
     */
    private String icon;
    
    /**
     * 是否隐藏
     */
    private Boolean hidden;
    
    /**
     * 是否缓存
     */
    private Boolean keepAlive;
    
    /**
     * 排序
     */
    private Integer sort;
    
    /**
     * 权限标识
     */
    private String permission;
    
    /**
     * 子菜单
     */
    private List<MenuTree> children;
    
    /**
     * 按钮权限列表
     */
    private List<String> buttons;
    
    // 将权限对象转换为菜单树节点
    public static MenuTree fromPermission(Permission permission) {
        MenuTree menu = new MenuTree();
        menu.setId(permission.getId());
        menu.setName(permission.getName());
        menu.setPath(permission.getPath());
        menu.setComponent(permission.getComponent());
        menu.setRedirect(permission.getRedirect());
        menu.setIcon(permission.getIcon());
        menu.setSort(permission.getSort());
        menu.setHidden(permission.getHidden() == 1);
        menu.setKeepAlive(permission.getKeepAlive() == 1);
        menu.setChildren(new ArrayList<>());
        return menu;
    }
} 